/**
 * 队列定义
 * 队列是一种列表，不同的是队列只能在队尾插入元素，在队首删除元素
 * 队列用于存储按顺序排列的数据，先进先出
 * 队列的两种主要操作 入队和出队
 * 入队操作在队尾插入新元素，出队操作删除队头的元素
 */
class Queue {
  constructor() {
    this.dataStore = [];
  }
  // 入队
  enqueue(element) {
    this.dataStore.push(element);
  }
  // 出队
  dequeue() {
    return this.dataStore.shift();
  }
  // 读取队首元素
  front() {
    return this.dataStore[0];
  }
  // 读取队尾元素
  back() {
    return this.dataStore[this.dataStore.length - 1];
  }
  // 显示队列的元素
  toString() {
    var retStr = "";
    for (var i = 0; i < this.dataStore.length; ++i) {
      retStr += this.dataStore[i] + "\n";
    }
    return retStr;
  }
  //  判断队列是否为空
  isEmpty() {
    if (this.dataStore.length == 0) {
      return true;
    } else {
      return false;
    }
  }
  count(){
    return this.dataStore.length
  }
}
module.exports = Queue
